package ai.leinao.notify.core.template;

import ai.leinao.notify.core.enums.NotifyType;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 通知模板属性
 * <p>
 *     我要发送告警消息给 dijia@163.com
 *     告警模板：
 *     id: alarm
 *     name: 告警
 *     provider: email
 *     notifyType: email
 *     template:
 *        subject(email 主题): 系统告警通知
 *        sendTo: ${sendTo}
 *        text(email 内容): ${time}${stationName}/${deviceName}出现了${alarmContent}
 *        variables:
 *        - id: time
 *          name: 时间
 *          description: 时间
 *          type: String
 *          defaultValue: ''
 *          required: true
 *        - id: stationName
 *          name: 站点名称
 *          description: 站点名称
 *          type: String
 *          defaultValue: ''
 *          required: true
 *        - id: deviceName
 *          name: 设备名称
 *          description: 设备名称
 *          type: String
 *          defaultValue: ''
 *          required: true
 *        - id: alarmContent
 *          name: 告警内容
 *          description: 告警内容
 *          type: String
 *          defaultValue: ''
 *          required: true
 * </p>
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
@Getter
@Setter
public class TemplateProperties implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    private String id;

    /**
     * 模板名称
     */
    private String name;

    /**
     * 通知类型
     */
    private NotifyType notifyType;

    /**
     * 模板提供者
     *
     */
    private String provider;

    /**
     * 模板内容
     */
    private Map<String, Object> template;

    /**
     * 模板描述
     */
    private String description;

    /**
     * 变量定义
     */
    private List<VariableDefinition> variableDefinitions;

}
